home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / CIncludes / MediaHandlers.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-12  |  14.3 KB  |  445 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        MediaHandlers.h
  3.  
  4.      Contains:    QuickTime Interfaces.
  5.  
  6.      Version:    Technology:    QuickTime 2.5
  7.                  Release:    Universal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1990-1997 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __MEDIAHANDLERS__
  19. #define __MEDIAHANDLERS__
  20.  
  21. #ifndef __CONDITIONALMACROS__
  22. #include <ConditionalMacros.h>
  23. #endif
  24. #ifndef __TYPES__
  25. #include <Types.h>
  26. #endif
  27. #ifndef __COMPONENTS__
  28. #include <Components.h>
  29. #endif
  30. #ifndef __MOVIES__
  31. #include <Movies.h>
  32. #endif
  33.  
  34.  
  35.  
  36. #if PRAGMA_ONCE
  37. #pragma once
  38. #endif
  39.  
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43.  
  44. #if PRAGMA_IMPORT
  45. #pragma import on
  46. #endif
  47.  
  48. #if PRAGMA_STRUCT_ALIGN
  49.     #pragma options align=mac68k
  50. #elif PRAGMA_STRUCT_PACKPUSH
  51.     #pragma pack(push, 2)
  52. #elif PRAGMA_STRUCT_PACK
  53.     #pragma pack(2)
  54. #endif
  55.  
  56.  
  57. enum {
  58.     handlerHasSpatial            = 1 << 0,
  59.     handlerCanClip                = 1 << 1,
  60.     handlerCanMatte                = 1 << 2,
  61.     handlerCanTransferMode        = 1 << 3,
  62.     handlerNeedsBuffer            = 1 << 4,
  63.     handlerNoIdle                = 1 << 5,
  64.     handlerNoScheduler            = 1 << 6,
  65.     handlerWantsTime            = 1 << 7,
  66.     handlerCGrafPortOnly        = 1 << 8,
  67.     handlerCanSend                = 1 << 9
  68. };
  69.  
  70. /* media task flags */
  71.  
  72. enum {
  73.     mMustDraw                    = 1 << 3,
  74.     mAtEnd                        = 1 << 4,
  75.     mPreflightDraw                = 1 << 5,
  76.     mSyncDrawing                = 1 << 6
  77. };
  78.  
  79. /* media task result flags */
  80.  
  81. enum {
  82.     mDidDraw                    = 1 << 0,
  83.     mNeedsToDraw                = 1 << 2,
  84.     mDrawAgain                    = 1 << 3,
  85.     mPartialDraw                = 1 << 4
  86. };
  87.  
  88.  
  89. enum {
  90.     forceUpdateRedraw            = 1 << 0,
  91.     forceUpdateNewBuffer        = 1 << 1
  92. };
  93.  
  94. struct GetMovieCompleteParams {
  95.     short                             version;
  96.     Movie                             theMovie;
  97.     Track                             theTrack;
  98.     Media                             theMedia;
  99.     TimeScale                         movieScale;
  100.     TimeScale                         mediaScale;
  101.     TimeValue                         movieDuration;
  102.     TimeValue                         trackDuration;
  103.     TimeValue                         mediaDuration;
  104.     Fixed                             effectiveRate;
  105.     TimeBase                         timeBase;
  106.     short                             volume;
  107.     Fixed                             width;
  108.     Fixed                             height;
  109.     MatrixRecord                     trackMovieMatrix;
  110.     CGrafPtr                         moviePort;
  111.     GDHandle                         movieGD;
  112.     PixMapHandle                     trackMatte;
  113.     QTAtomContainer                 inputMap;
  114. };
  115. typedef struct GetMovieCompleteParams GetMovieCompleteParams;
  116.  
  117.  
  118. enum {
  119.     kMediaVideoParamBrightness    = 1,
  120.     kMediaVideoParamContrast    = 2,
  121.     kMediaVideoParamHue            = 3,
  122.     kMediaVideoParamSharpness    = 4,
  123.     kMediaVideoParamSaturation    = 5,
  124.     kMediaVideoParamBlackLevel    = 6,
  125.     kMediaVideoParamWhiteLevel    = 7
  126. };
  127.  
  128. typedef Handle *                        dataHandlePtr;
  129. typedef dataHandlePtr *                    dataHandleHandle;
  130.  
  131.  
  132.  
  133. /* MediaCallRange2 */
  134. /* These are unique to each type of media handler */
  135. /* They are also included in the public interfaces */
  136.  
  137.  
  138. /***** These are the calls for dealing with the Generic media handler *****/
  139. EXTERN_API( ComponentResult )
  140. MediaInitialize                    (MediaHandler             mh,
  141.                                  GetMovieCompleteParams * gmc)                                FIVEWORDINLINE(0x2F3C, 0x0004, 0x0501, 0x7000, 0xA82A);
  142.  
  143. EXTERN_API( ComponentResult )
  144. MediaSetHandlerCapabilities        (MediaHandler             mh,
  145.                                  long                     flags,
  146.                                  long                     flagsMask)                            FIVEWORDINLINE(0x2F3C, 0x0008, 0x0502, 0x7000, 0xA82A);
  147.  
  148. EXTERN_API( ComponentResult )
  149. MediaIdle                        (MediaHandler             mh,
  150.                                  TimeValue                 atMediaTime,
  151.                                  long                     flagsIn,
  152.                                  long *                    flagsOut,
  153.                                  const TimeRecord *        movieTime)                            FIVEWORDINLINE(0x2F3C, 0x0010, 0x0503, 0x7000, 0xA82A);
  154.  
  155. EXTERN_API( ComponentResult )
  156. MediaGetMediaInfo                (MediaHandler             mh,
  157.                                  Handle                 h)                                    FIVEWORDINLINE(0x2F3C, 0x0004, 0x0504, 0x7000, 0xA82A);
  158.  
  159. EXTERN_API( ComponentResult )
  160. MediaPutMediaInfo                (MediaHandler             mh,
  161.                                  Handle                 h)                                    FIVEWORDINLINE(0x2F3C, 0x0004, 0x0505, 0x7000, 0xA82A);
  162.  
  163. EXTERN_API( ComponentResult )
  164. MediaSetActive                    (MediaHandler             mh,
  165.                                  Boolean                 enableMedia)                        FIVEWORDINLINE(0x2F3C, 0x0002, 0x0506, 0x7000, 0xA82A);
  166.  
  167. EXTERN_API( ComponentResult )
  168. MediaSetRate                    (MediaHandler             mh,
  169.                                  Fixed                     rate)                                FIVEWORDINLINE(0x2F3C, 0x0004, 0x0507, 0x7000, 0xA82A);
  170.  
  171. EXTERN_API( ComponentResult )
  172. MediaGGetStatus                    (MediaHandler             mh,
  173.                                  ComponentResult *        statusErr)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0508, 0x7000, 0xA82A);
  174.  
  175. EXTERN_API( ComponentResult )
  176. MediaTrackEdited                (MediaHandler             mh)                                    FIVEWORDINLINE(0x2F3C, 0x0000, 0x0509, 0x7000, 0xA82A);
  177.  
  178. EXTERN_API( ComponentResult )
  179. MediaSetMediaTimeScale            (MediaHandler             mh,
  180.                                  TimeScale                 newTimeScale)                        FIVEWORDINLINE(0x2F3C, 0x0004, 0x050A, 0x7000, 0xA82A);
  181.  
  182. EXTERN_API( ComponentResult )
  183. MediaSetMovieTimeScale            (MediaHandler             mh,
  184.                                  TimeScale                 newTimeScale)                        FIVEWORDINLINE(0x2F3C, 0x0004, 0x050B, 0x7000, 0xA82A);
  185.  
  186. EXTERN_API( ComponentResult )
  187. MediaSetGWorld                    (MediaHandler             mh,
  188.                                  CGrafPtr                 aPort,
  189.                                  GDHandle                 aGD)                                FIVEWORDINLINE(0x2F3C, 0x0008, 0x050C, 0x7000, 0xA82A);
  190.  
  191. EXTERN_API( ComponentResult )
  192. MediaSetDimensions                (MediaHandler             mh,
  193.                                  Fixed                     width,
  194.                                  Fixed                     height)                                FIVEWORDINLINE(0x2F3C, 0x0008, 0x050D, 0x7000, 0xA82A);
  195.  
  196. EXTERN_API( ComponentResult )
  197. MediaSetClip                    (MediaHandler             mh,
  198.                                  RgnHandle                 theClip)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x050E, 0x7000, 0xA82A);
  199.  
  200. EXTERN_API( ComponentResult )
  201. MediaSetMatrix                    (MediaHandler             mh,
  202.                                  MatrixRecord *            trackMovieMatrix)                    FIVEWORDINLINE(0x2F3C, 0x0004, 0x050F, 0x7000, 0xA82A);
  203.  
  204. EXTERN_API( ComponentResult )
  205. MediaGetTrackOpaque                (MediaHandler             mh,
  206.                                  Boolean *                trackIsOpaque)                        FIVEWORDINLINE(0x2F3C, 0x0004, 0x0510, 0x7000, 0xA82A);
  207.  
  208. EXTERN_API( ComponentResult )
  209. MediaSetGraphicsMode            (MediaHandler             mh,
  210.                                  long                     mode,
  211.                                  const RGBColor *        opColor)                            FIVEWORDINLINE(0x2F3C, 0x0008, 0x0511, 0x7000, 0xA82A);
  212.  
  213. EXTERN_API( ComponentResult )
  214. MediaGetGraphicsMode            (MediaHandler             mh,
  215.                                  long *                    mode,
  216.                                  RGBColor *                opColor)                            FIVEWORDINLINE(0x2F3C, 0x0008, 0x0512, 0x7000, 0xA82A);
  217.  
  218. EXTERN_API( ComponentResult )
  219. MediaGSetVolume                    (MediaHandler             mh,
  220.                                  short                     volume)                                FIVEWORDINLINE(0x2F3C, 0x0002, 0x0513, 0x7000, 0xA82A);
  221.  
  222. EXTERN_API( ComponentResult )
  223. MediaSetSoundBalance            (MediaHandler             mh,
  224.                                  short                     balance)                            FIVEWORDINLINE(0x2F3C, 0x0002, 0x0514, 0x7000, 0xA82A);
  225.  
  226. EXTERN_API( ComponentResult )
  227. MediaGetSoundBalance            (MediaHandler             mh,
  228.                                  short *                balance)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0515, 0x7000, 0xA82A);
  229.  
  230. EXTERN_API( ComponentResult )
  231. MediaGetNextBoundsChange        (MediaHandler             mh,
  232.                                  TimeValue *            when)                                FIVEWORDINLINE(0x2F3C, 0x0004, 0x0516, 0x7000, 0xA82A);
  233.  
  234. EXTERN_API( ComponentResult )
  235. MediaGetSrcRgn                    (MediaHandler             mh,
  236.                                  RgnHandle                 rgn,
  237.                                  TimeValue                 atMediaTime)                        FIVEWORDINLINE(0x2F3C, 0x0008, 0x0517, 0x7000, 0xA82A);
  238.  
  239. EXTERN_API( ComponentResult )
  240. MediaPreroll                    (MediaHandler             mh,
  241.                                  TimeValue                 time,
  242.                                  Fixed                     rate)                                FIVEWORDINLINE(0x2F3C, 0x0008, 0x0518, 0x7000, 0xA82A);
  243.  
  244. EXTERN_API( ComponentResult )
  245. MediaSampleDescriptionChanged    (MediaHandler             mh,
  246.                                  long                     index)                                FIVEWORDINLINE(0x2F3C, 0x0004, 0x0519, 0x7000, 0xA82A);
  247.  
  248. EXTERN_API( ComponentResult )
  249. MediaHasCharacteristic            (MediaHandler             mh,
  250.                                  OSType                 characteristic,
  251.                                  Boolean *                hasIt)                                FIVEWORDINLINE(0x2F3C, 0x0008, 0x051A, 0x7000, 0xA82A);
  252.  
  253. EXTERN_API( ComponentResult )
  254. MediaGetOffscreenBufferSize        (MediaHandler             mh,
  255.                                  Rect *                    bounds,
  256.                                  short                     depth,
  257.                                  CTabHandle             ctab)                                FIVEWORDINLINE(0x2F3C, 0x000A, 0x051B, 0x7000, 0xA82A);
  258.  
  259. EXTERN_API( ComponentResult )
  260. MediaSetHints                    (MediaHandler             mh,
  261.                                  long                     hints)                                FIVEWORDINLINE(0x2F3C, 0x0004, 0x051C, 0x7000, 0xA82A);
  262.  
  263. EXTERN_API( ComponentResult )
  264. MediaGetName                    (MediaHandler             mh,
  265.                                  Str255                 name,
  266.                                  long                     requestedLanguage,
  267.                                  long *                    actualLanguage)                        FIVEWORDINLINE(0x2F3C, 0x000C, 0x051D, 0x7000, 0xA82A);
  268.  
  269. EXTERN_API( ComponentResult )
  270. MediaForceUpdate                (MediaHandler             mh,
  271.                                  long                     forceUpdateFlags)                    FIVEWORDINLINE(0x2F3C, 0x0004, 0x051E, 0x7000, 0xA82A);
  272.  
  273. EXTERN_API( ComponentResult )
  274. MediaGetDrawingRgn                (MediaHandler             mh,
  275.                                  RgnHandle *            partialRgn)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x051F, 0x7000, 0xA82A);
  276.  
  277. EXTERN_API( ComponentResult )
  278. MediaGSetActiveSegment            (MediaHandler             mh,
  279.                                  TimeValue                 activeStart,
  280.                                  TimeValue                 activeDuration)                        FIVEWORDINLINE(0x2F3C, 0x0008, 0x0520, 0x7000, 0xA82A);
  281.  
  282. EXTERN_API( ComponentResult )
  283. MediaInvalidateRegion            (MediaHandler             mh,
  284.                                  RgnHandle                 invalRgn)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0521, 0x7000, 0xA82A);
  285.  
  286. EXTERN_API( ComponentResult )
  287. MediaGetNextStepTime            (MediaHandler             mh,
  288.                                  short                     flags,
  289.                                  TimeValue                 mediaTimeIn,
  290.                                  TimeValue *            mediaTimeOut,
  291.                                  Fixed                     rate)                                FIVEWORDINLINE(0x2F3C, 0x000E, 0x0522, 0x7000, 0xA82A);
  292.  
  293. EXTERN_API( ComponentResult )
  294. MediaSetNonPrimarySourceData    (MediaHandler             mh,
  295.                                  long                     inputIndex,
  296.                                  long                     dataDescriptionSeed,
  297.                                  Handle                 dataDescription,
  298.                                  void *                    data,
  299.                                  long                     dataSize,
  300.                                  ICMCompletionProcRecordPtr  asyncCompletionProc,
  301.                                  ProcPtr                 transferProc,
  302.                                  void *                    refCon)                                FIVEWORDINLINE(0x2F3C, 0x0020, 0x0523, 0x7000, 0xA82A);
  303.  
  304. EXTERN_API( ComponentResult )
  305. MediaChangedNonPrimarySource    (MediaHandler             mh,
  306.                                  long                     inputIndex)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0524, 0x7000, 0xA82A);
  307.  
  308. EXTERN_API( ComponentResult )
  309. MediaTrackReferencesChanged        (MediaHandler             mh)                                    FIVEWORDINLINE(0x2F3C, 0x0000, 0x0525, 0x7000, 0xA82A);
  310.  
  311. EXTERN_API( ComponentResult )
  312. MediaGetSampleDataPointer        (MediaHandler             mh,
  313.                                  long                     sampleNum,
  314.                                  Ptr *                    dataPtr,
  315.                                  long *                    dataSize,
  316.                                  long *                    sampleDescIndex)                    FIVEWORDINLINE(0x2F3C, 0x0010, 0x0526, 0x7000, 0xA82A);
  317.  
  318. EXTERN_API( ComponentResult )
  319. MediaReleaseSampleDataPointer    (MediaHandler             mh,
  320.                                  long                     sampleNum)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0527, 0x7000, 0xA82A);
  321.  
  322. EXTERN_API( ComponentResult )
  323. MediaTrackPropertyAtomChanged    (MediaHandler             mh)                                    FIVEWORDINLINE(0x2F3C, 0x0000, 0x0528, 0x7000, 0xA82A);
  324.  
  325. EXTERN_API( ComponentResult )
  326. MediaSetTrackInputMapReference    (MediaHandler             mh,
  327.                                  QTAtomContainer         inputMap)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0529, 0x7000, 0xA82A);
  328.  
  329.  
  330. EXTERN_API( ComponentResult )
  331. MediaSetVideoParam                (MediaHandler             mh,
  332.                                  long                     whichParam,
  333.                                  unsigned short *        value)                                FIVEWORDINLINE(0x2F3C, 0x0008, 0x052B, 0x7000, 0xA82A);
  334.  
  335. EXTERN_API( ComponentResult )
  336. MediaGetVideoParam                (MediaHandler             mh,
  337.                                  long                     whichParam,
  338.                                  unsigned short *        value)                                FIVEWORDINLINE(0x2F3C, 0x0008, 0x052C, 0x7000, 0xA82A);
  339.  
  340. EXTERN_API( ComponentResult )
  341. MediaCompare                    (MediaHandler             mh,
  342.                                  Boolean *                isOK,
  343.                                  Media                     srcMedia,
  344.                                  ComponentInstance         srcMediaComponent)                    FIVEWORDINLINE(0x2F3C, 0x000C, 0x052D, 0x7000, 0xA82A);
  345.  
  346. EXTERN_API( ComponentResult )
  347. MediaGetClock                    (MediaHandler             mh,
  348.                                  ComponentInstance *    clock)                                FIVEWORDINLINE(0x2F3C, 0x0004, 0x052E, 0x7000, 0xA82A);
  349.  
  350. EXTERN_API( ComponentResult )
  351. MediaSetSoundOutputComponent    (MediaHandler             mh,
  352.                                  Component                 outputComponent)                    FIVEWORDINLINE(0x2F3C, 0x0004, 0x052F, 0x7000, 0xA82A);
  353.  
  354. EXTERN_API( ComponentResult )
  355. MediaGetSoundOutputComponent    (MediaHandler             mh,
  356.                                  Component *            outputComponent)                    FIVEWORDINLINE(0x2F3C, 0x0004, 0x0530, 0x7000, 0xA82A);
  357.  
  358. EXTERN_API( ComponentResult )
  359. MediaSetSoundLocalizationData    (MediaHandler             mh,
  360.                                  Handle                 data)                                FIVEWORDINLINE(0x2F3C, 0x0004, 0x0531, 0x7000, 0xA82A);
  361.  
  362. EXTERN_API( ComponentResult )
  363. MediaFixSampleDescription        (MediaHandler             mh,
  364.                                  long                     index,
  365.                                  SampleDescriptionHandle  desc)                                FIVEWORDINLINE(0x2F3C, 0x0008, 0x0532, 0x7000, 0xA82A);
  366.  
  367.  
  368.  
  369.  
  370. /* selectors for component calls */
  371. enum {
  372.     kMediaInitializeSelect                            = 0x0501,
  373.     kMediaSetHandlerCapabilitiesSelect                = 0x0502,
  374.     kMediaIdleSelect                                = 0x0503,
  375.     kMediaGetMediaInfoSelect                        = 0x0504,
  376.     kMediaPutMediaInfoSelect                        = 0x0505,
  377.     kMediaSetActiveSelect                            = 0x0506,
  378.     kMediaSetRateSelect                                = 0x0507,
  379.     kMediaGGetStatusSelect                            = 0x0508,
  380.     kMediaTrackEditedSelect                            = 0x0509,
  381.     kMediaSetMediaTimeScaleSelect                    = 0x050A,
  382.     kMediaSetMovieTimeScaleSelect                    = 0x050B,
  383.     kMediaSetGWorldSelect                            = 0x050C,
  384.     kMediaSetDimensionsSelect                        = 0x050D,
  385.     kMediaSetClipSelect                                = 0x050E,
  386.     kMediaSetMatrixSelect                            = 0x050F,
  387.     kMediaGetTrackOpaqueSelect                        = 0x0510,
  388.     kMediaSetGraphicsModeSelect                        = 0x0511,
  389.     kMediaGetGraphicsModeSelect                        = 0x0512,
  390.     kMediaGSetVolumeSelect                            = 0x0513,
  391.     kMediaSetSoundBalanceSelect                        = 0x0514,
  392.     kMediaGetSoundBalanceSelect                        = 0x0515,
  393.     kMediaGetNextBoundsChangeSelect                    = 0x0516,
  394.     kMediaGetSrcRgnSelect                            = 0x0517,
  395.     kMediaPrerollSelect                                = 0x0518,
  396.     kMediaSampleDescriptionChangedSelect            = 0x0519,
  397.     kMediaHasCharacteristicSelect                    = 0x051A,
  398.     kMediaGetOffscreenBufferSizeSelect                = 0x051B,
  399.     kMediaSetHintsSelect                            = 0x051C,
  400.     kMediaGetNameSelect                                = 0x051D,
  401.     kMediaForceUpdateSelect                            = 0x051E,
  402.     kMediaGetDrawingRgnSelect                        = 0x051F,
  403.     kMediaGSetActiveSegmentSelect                    = 0x0520,
  404.     kMediaInvalidateRegionSelect                    = 0x0521,
  405.     kMediaGetNextStepTimeSelect                        = 0x0522,
  406.     kMediaSetNonPrimarySourceDataSelect                = 0x0523,
  407.     kMediaChangedNonPrimarySourceSelect                = 0x0524,
  408.     kMediaTrackReferencesChangedSelect                = 0x0525,
  409.     kMediaGetSampleDataPointerSelect                = 0x0526,
  410.     kMediaReleaseSampleDataPointerSelect            = 0x0527,
  411.     kMediaTrackPropertyAtomChangedSelect            = 0x0528,
  412.     kMediaSetTrackInputMapReferenceSelect            = 0x0529,
  413.     kMediaSetVideoParamSelect                        = 0x052B,
  414.     kMediaGetVideoParamSelect                        = 0x052C,
  415.     kMediaCompareSelect                                = 0x052D,
  416.     kMediaGetClockSelect                            = 0x052E,
  417.     kMediaSetSoundOutputComponentSelect                = 0x052F,
  418.     kMediaGetSoundOutputComponentSelect                = 0x0530,
  419.     kMediaSetSoundLocalizationDataSelect            = 0x0531,
  420.     kMediaFixSampleDescriptionSelect                = 0x0532
  421. };
  422.  
  423.  
  424.  
  425. #if PRAGMA_STRUCT_ALIGN
  426.     #pragma options align=reset
  427. #elif PRAGMA_STRUCT_PACKPUSH
  428.     #pragma pack(pop)
  429. #elif PRAGMA_STRUCT_PACK
  430.     #pragma pack()
  431. #endif
  432.  
  433. #ifdef PRAGMA_IMPORT_OFF
  434. #pragma import off
  435. #elif PRAGMA_IMPORT
  436. #pragma import reset
  437. #endif
  438.  
  439. #ifdef __cplusplus
  440. }
  441. #endif
  442.  
  443. #endif /* __MEDIAHANDLERS__ */
  444.  
  445.